package LearnDataStructure.a_线性结构.列表;

import java.util.Iterator;

/**
 * @version: 1.0
 * @Author: wuqiu
 * @date: 2023-06-30 20:28
 * @description: LeetcodeLearnAlgorithm -> LearnDataStructure.a_线性结构.列表
 */
public interface MyList<T> extends Iterator<T> {
    /**
     * 新增
     * @param element
     */
    void add(T element);

    /**
     * 删除指定内容的元素
     * @param element
     */
    void delete(T element);

    /**
     * 删除指定下标的元素
     * @param index
     */
    void delete(int index);

    /**
     * 修改指定索引的元素
     * @param index
     * @param newElement
     */
    void update(int index,T newElement);

    /**
     * 容器中是否含有target这个内容的元素
     * @param target
     * @return
     */
    boolean contains(T target);

    /**
     * 返回指定索引的元素
     * @param index
     * @return
     */
    T AtElement(int index);

    /**
     * 返回指定元素的索引
     * @param element
     * @return
     */
    int indexOf(T element);
}
